package com.example.vo;

import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;

@Data
public class RechargeRecordVO {
    
    private Long id;
    
    private Long userId;
    
    private String username;
    
    private String nickname; // 用户昵称（关联查询）
    
    private BigDecimal rechargeAmount; // 充值金额
    
    private BigDecimal beforeBalance; // 充值前余额
    
    private BigDecimal afterBalance; // 充值后余额
    
    private String rechargeType; // 充值类型
    
    private String rechargeTypeName; // 充值类型名称
    
    private String paymentMethod; // 支付方式
    
    private String paymentMethodName; // 支付方式名称
    
    private String orderNo; // 订单号
    
    private String transactionId; // 第三方交易ID
    
    private Integer status; // 充值状态
    
    private String statusName; // 状态名称
    
    private String remark; // 备注
    
    private Long operatorId; // 操作员ID
    
    private String operatorName; // 操作员姓名
    
    private LocalDateTime createTime;
    
    private LocalDateTime updateTime;
    
    // 获取充值类型名称
    public String getRechargeTypeName() {
        if (rechargeType == null) {
            return "";
        }
        switch (rechargeType) {
            case "MANUAL":
                return "手动充值";
            case "AUTO":
                return "自动充值";
            case "ADMIN":
                return "管理员充值";
            default:
                return rechargeType;
        }
    }
    
    // 获取支付方式名称
    public String getPaymentMethodName() {
        if (paymentMethod == null) {
            return "";
        }
        switch (paymentMethod) {
            case "BALANCE":
                return "余额";
            case "ALIPAY":
                return "支付宝";
            case "WECHAT":
                return "微信";
            default:
                return paymentMethod;
        }
    }
    
    // 获取状态名称
    public String getStatusName() {
        if (status == null) {
            return "";
        }
        switch (status) {
            case 0:
                return "失败";
            case 1:
                return "成功";
            case 2:
                return "处理中";
            default:
                return "未知";
        }
    }
}
